package com.project.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.project.bean.OrderBean;

import java.time.LocalDate;
import java.util.List;

public interface IOrderService {
    /**
     * 添加订单
     * 1、添加新订单(同时防护订单ID)
     * 从session中，取出登陆用户。按用户id、商品id，查询购买商品是否存在该购物车，得到购物车集合。
     * 计算购物车总价，封装为订单总结，完成订单添加
     * 2、完成详情表达添加
     * 3、根据用户ID，清空购物车
     * @param order  订单对象
     *
     */
    public void addOrder(OrderBean order);

    /**
     * 按用户ID分页查询订单
     * @param pageNO 页码
     * @param userId 用户ID
     * @return 订单分页对象
     */
    public IPage<OrderBean> findByUser(Integer pageNO,Integer userId);

    /**
     * 按订单ID查询订单
     * @param orderId 订单ID
     * @return 订单对象
     */
    public OrderBean findOrder(Integer orderId);

    /**
     *  动态条件分页查询所有订单
     * @param pageNO 页码
     * @param status 订单状态
     * @param startDate 起始日期
     * @param endDate 结束日期
     * @return 订单分页对象
     */
    public IPage<OrderBean> selectByItems(Integer pageNO, String status, LocalDate startDate,LocalDate endDate);

    /**
     * 管理员发货
     * @param orderId 订单ID
     */
    public void sendOrder(Integer orderId);

    /**
     * 查询所有"发货中"订单
     * @return 订单计划
     */
    public List<OrderBean> findSending();

    /**
     * 送货员结账
     * @param orderId 订单ID
     */
    public void changeStatus(Integer orderId);
}
